#define _CRT_SECURE_NO_WARNINGS 1
//#include<stdio.h>
//#include<stdlib.h>
//struct stu
//{
//	char c;
//	int a;
//	int arr[];
//};
//
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//
//
//	struct stu* p = (struct stu*)malloc(sizeof(struct stu) + num*4);
//	if (p == NULL)
//		perror("malloc:");
//	else
//	{
//		for (int i = 0; i < num; i++)
//		{
//			p->arr[i] = i;
//		}
//		for (int i = 0; i < num; i++)
//		{
//			printf("%d ", p->arr[i]);
//		}
//	}
//	
//	free(p);
//	p = NULL;
//	return 0;
//}

#include<stdio.h>
#include<stdlib.h>
struct s
{
	int a;
	char c;
	int* p;
};
int main()
{
	int num = 0;
	scanf("%d", &num);
	struct s* ps = (struct s*)malloc(sizeof(struct s));
	if (ps == NULL)
	{
		perror("malloc");
		return 1;
	}
	else
	{
		ps->p = (int*)malloc(4 * num);
		if (ps == NULL)
		{
			perror("p_malloc");
			return 1;
		}
		else
		{
			for (int i = 0; i < num; i++)
			{
				ps->p[i] = i;
			}
			for (int i = 0; i < num; i++)
			{
				printf("%d ", ps->p[i]);
			}
		}
	}
	free(ps->p);
	free(ps);
	ps->p = NULL;
	ps = NULL;
}